SM4算法介绍与代码实现

您所在的位置:网站首页 fpe加密 中文 SM4算法介绍与代码实现

SM4算法介绍与代码实现

2023-12-16 17:52| 来源: 网络整理| 查看: 265

SM4算法介绍与代码实现

本文最后更新于:2022年6月5日 下午

SM4算法介绍 加密过程

SM4加密过程

首先左侧描述了SM4加密的整体流程:输入的一个消息分组为128bits,划分成4个小块,每个小块32bits这四个小块经过32轮加密处理加密处理后,再经过一次Permutation置换,得到最终加密结果右侧描述其中一轮的加密过程,其他轮函数加密过程是类似的,只是轮密钥不同:X_3 先后跟 X_2 、X_1 进行异或 —— ①① 得到的结果再与轮密钥 RK_i 进行异或 —— ②② 得到的记过为32bits,再分成4组8bits,每一组8bits 使用相同的S-Box进行替换,得到新的8bits —— ③③ 得到的4组8bits重新拼接得到32bits,将这32bits复制成5份输入,第1份循环左移2位,第2份循环左移10位,第3份循环左移18位,第4份循环左移24位,第5份不改动直接输出 —— ④④ 的得到的5份输出的32bits与X_0 一起进行异或 —— ⑤最终得到输出 X’_3 就是 ⑤ 的输出,其他输出X’_0 = X_1 , X’_1 = X_2, X’_2 = X_3

用公式进行描述如下所示,其中S代表使用S-box进行替换,L表示线性函数执行循环左移的操作

X0′=X1X1′=X2X2′=X3X'_0 = X_1 \\ X'_1 = X_2 \\ X'_2 = X_3X0′​=X1​X1′​=X2​X2′​=X3​

X3′=X0⊕L(S(X3⊕X2⊕X1⊕RKi))X'_3 =X_0⊕ L( S (X_3 ⊕ X_2 ⊕ X_1 ⊕ RK_i))X3′​=X0​⊕L(S(X3​⊕X2​⊕X1​⊕RKi​))

A=(a0,a1,a2,a3),B=(b0,b1,b2,b3)(b0,b1,b2,b3)=S(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3))A=(a_0,a_1,a_2,a_3), B=(b_0,b_1,b_2,b_3) \\ (b_0,b_1,b_2,b_3) = S(A)= (Sbox(a_0),Sbox(a_1),Sbox(a_2),Sbox(a_3))A=(a0​,a1​,a2​,a3​),B=(b0​,b1​,b2​,b3​)(b0​,b1​,b2​,b3​)=S(A)=(Sbox(a0​),Sbox(a1​),Sbox(a2​),Sbox(a3​))

B=(b0,b1,b2,b3),C(32bits)C=L(B)=B⊕(B



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3